Dot Product between Two Tensors Across the Last Axis
This is an example of how to use the csdl.dot() function to compute the dot product between two vectors.
from csdl_om import Simulatorfrom csdl import Modelimport csdlimport numpy as np
class ExampleTensorTensorLast(Model):
def define(self):
m = 2 n = 4 p = 3
# Shape of the tensors ten_shape = (m, n, p)
# Number of elements in the tensors num_ten_elements = np.prod(ten_shape)
# Values for the two tensors ten1 = np.arange(num_ten_elements).reshape(ten_shape) ten2 = np.arange(num_ten_elements, 2 * num_ten_elements).reshape(ten_shape)
# Adding the tensors to csdl ten1 = self.declare_variable('ten1', val=ten1) ten2 = self.declare_variable('ten2', val=ten2)
# Tensor-Tensor Dot Product specifying the last axis self.register_output('TenTenDotLast', csdl.dot(ten1, ten2, axis=2))
sim = Simulator(ExampleTensorTensorLast())sim.run()
print('ten1', sim['ten1'].shape)print(sim['ten1'])print('ten2', sim['ten2'].shape)print(sim['ten2'])print('TenTenDotLast', sim['TenTenDotLast'].shape)print(sim['TenTenDotLast'])
[[[ 0. 1. 2.] [ 3. 4. 5.] [ 6. 7. 8.] [ 9. 10. 11.]]
[[12. 13. 14.] [15. 16. 17.] [18. 19. 20.] [21. 22. 23.]]]ten2 (2, 4, 3)[[[24. 25. 26.] [27. 28. 29.] [30. 31. 32.] [33. 34. 35.]]
[[36. 37. 38.] [39. 40. 41.] [42. 43. 44.] [45. 46. 47.]]]TenTenDotLast (2, 4)[[ 77. 338. 653. 1022.] [1445. 1922. 2453. 3038.]]